package opf5.startup;

import java.util.ArrayList;
import java.util.List;

import opf5.entities.creadoresEquipos.CreadorEquiposParejos;
import opf5.entities.dominio.Equipo;
import opf5.entities.dominio.Inscripcion;
import opf5.entities.dominio.Jugador;
import opf5.entities.dominio.Partido;
import opf5.entities.inscripciones.InscripcionCondicional;
import opf5.entities.inscripciones.InscripcionEstandar;
import opf5.entities.inscripciones.InscripcionSolidaria;
import opf5.entities.jugadores.JugadorConcreto;
import opf5.entities.partidos.PartidoConcreto;
import opf5.entities.repositorios.OPF5Factory;
import opf5.entities.repositorios.OPF5FactoryPersistente;
import opf5.utilidades.Fecha;

public class OPF5CargaDeDatos {
	public static void main(String args[]) {
		OPF5FactoryPersistente.setInstance();
		OPF5CargaDeDatos aplicacion = new OPF5CargaDeDatos();
		aplicacion.start();
	}

	private void start() {
		Jugador admin = OPF5Factory.getInstance().makeJugador("admin", "admin@OPF5.com", new Fecha(6, 6, 1996, 0));
		admin.setHandicapJugador(10);
		
		Jugador jugador1 = OPF5Factory.getInstance().makeJugador("Jugador1", "Jugador1@opf5.com", new Fecha(1, 1, 1980, 0));
		jugador1.setHandicapJugador(1);
		Jugador jugador2 = OPF5Factory.getInstance().makeJugador("Jugador2", "Jugador2@opf5.com", new Fecha(1, 1, 1981, 0));
		jugador2.setHandicapJugador(2);
		Jugador jugador3 = OPF5Factory.getInstance().makeJugador("Jugador3", "Jugador3@opf5.com", new Fecha(1, 1, 1982, 0));
		jugador3.setHandicapJugador(3);
		Jugador jugador4 = OPF5Factory.getInstance().makeJugador("Jugador4", "Jugador4@opf5.com", new Fecha(1, 1, 1983, 0));
		jugador4.setHandicapJugador(4);
		Jugador jugador5 = OPF5Factory.getInstance().makeJugador("Jugador5", "Jugador5@opf5.com", new Fecha(1, 1, 1984, 0));
		jugador5.setHandicapJugador(5);
		Jugador jugador6 = OPF5Factory.getInstance().makeJugador("Jugador6", "Jugador6@opf5.com", new Fecha(1, 1, 1985, 0));
		jugador6.setHandicapJugador(6);
		Jugador jugador7 = OPF5Factory.getInstance().makeJugador("Jugador7", "Jugador7@opf5.com", new Fecha(1, 1, 1986, 0));
		jugador7.setHandicapJugador(7);
		Jugador jugador8 = OPF5Factory.getInstance().makeJugador("Jugador8", "Jugador8@opf5.com", new Fecha(1, 1, 1987, 0));
		jugador8.setHandicapJugador(8);
		Jugador jugador9 = OPF5Factory.getInstance().makeJugador("Jugador9", "Jugador9@opf5.com", new Fecha(1, 1, 1988, 0));
		jugador9.setHandicapJugador(9);
		Jugador jugador10 = OPF5Factory.getInstance().makeJugador("Jugador10", "Jugador10@opf5.com", new Fecha(1, 1, 1989, 0));
		jugador10.setHandicapJugador(10);
		Jugador jugador11 = OPF5Factory.getInstance().makeJugador("Jugador11", "Jugador11@opf5.com", new Fecha(1, 1, 1990, 0));
		jugador11.setHandicapJugador(1);
		Jugador jugador12 = OPF5Factory.getInstance().makeJugador("Jugador12", "Jugador12@opf5.com", new Fecha(1, 1, 1991, 0));
		jugador12.setHandicapJugador(2);
		Jugador jugador13 = OPF5Factory.getInstance().makeJugador("Jugador13", "Jugador13@opf5.com", new Fecha(1, 1, 1992, 0));
		jugador13.setHandicapJugador(3);
		Jugador jugador14 = OPF5Factory.getInstance().makeJugador("Jugador14", "Jugador14@opf5.com", new Fecha(1, 1, 1993, 0));
		jugador14.setHandicapJugador(4);
		Jugador jugador15 = OPF5Factory.getInstance().makeJugador("Jugador15", "Jugador15@opf5.com", new Fecha(1, 1, 1994, 0));
		jugador15.setHandicapJugador(5);
		Jugador jugador16 = OPF5Factory.getInstance().makeJugador("Jugador16", "Jugador16@opf5.com", new Fecha(1, 1, 1995, 0));
		jugador16.setHandicapJugador(6);
		Jugador jugador17 = OPF5Factory.getInstance().makeJugador("Jugador17", "Jugador17@opf5.com", new Fecha(1, 1, 1996, 0));
		jugador17.setHandicapJugador(7);
		Jugador jugador18 = OPF5Factory.getInstance().makeJugador("Jugador18", "Jugador18@opf5.com", new Fecha(1, 1, 1997, 0));
		jugador18.setHandicapJugador(8);
		Jugador jugador19 = OPF5Factory.getInstance().makeJugador("Jugador19", "Jugador19@opf5.com", new Fecha(1, 1, 1998, 0));
		jugador19.setHandicapJugador(9);
		Jugador jugador20 = OPF5Factory.getInstance().makeJugador("Jugador20", "Jugador20@opf5.com", new Fecha(1, 1, 1999, 0));
		jugador20.setHandicapJugador(10);
		
		
		Partido partidoCompleto = OPF5Factory.getInstance().makePartido(new Fecha("01/12/2014 19:00", "dd/MM/yyyy HH:mm"), "Cancha5");
		partidoCompleto.inscribir(OPF5Factory.getInstance().makeInscripcionEstandar(jugador1));
		partidoCompleto.inscribir(OPF5Factory.getInstance().makeInscripcionEstandar(jugador2));
		partidoCompleto.inscribir(OPF5Factory.getInstance().makeInscripcionEstandar(jugador3));
		partidoCompleto.inscribir(OPF5Factory.getInstance().makeInscripcionEstandar(jugador4));
		partidoCompleto.inscribir(OPF5Factory.getInstance().makeInscripcionEstandar(jugador5));
		partidoCompleto.inscribir(OPF5Factory.getInstance().makeInscripcionEstandar(jugador6));
		partidoCompleto.inscribir(OPF5Factory.getInstance().makeInscripcionEstandar(jugador7));
		partidoCompleto.inscribir(OPF5Factory.getInstance().makeInscripcionEstandar(jugador8));
		partidoCompleto.inscribir(OPF5Factory.getInstance().makeInscripcionEstandar(jugador9));
		partidoCompleto.inscribir(OPF5Factory.getInstance().makeInscripcionEstandar(jugador10));
		
		Partido partido9Estandar1Solidaria = OPF5Factory.getInstance().makePartido(new Fecha("02/12/2014 19:00", "dd/MM/yyyy HH:mm"), "Fubol5");
		partido9Estandar1Solidaria.inscribir(OPF5Factory.getInstance().makeInscripcionEstandar(jugador1));
		partido9Estandar1Solidaria.inscribir(OPF5Factory.getInstance().makeInscripcionEstandar(jugador2));
		partido9Estandar1Solidaria.inscribir(OPF5Factory.getInstance().makeInscripcionEstandar(jugador3));
		partido9Estandar1Solidaria.inscribir(OPF5Factory.getInstance().makeInscripcionEstandar(jugador4));
		partido9Estandar1Solidaria.inscribir(OPF5Factory.getInstance().makeInscripcionEstandar(jugador5));
		partido9Estandar1Solidaria.inscribir(OPF5Factory.getInstance().makeInscripcionEstandar(jugador6));
		partido9Estandar1Solidaria.inscribir(OPF5Factory.getInstance().makeInscripcionEstandar(jugador7));
		partido9Estandar1Solidaria.inscribir(OPF5Factory.getInstance().makeInscripcionSolidaria(jugador8));
		partido9Estandar1Solidaria.inscribir(OPF5Factory.getInstance().makeInscripcionEstandar(jugador9));
		partido9Estandar1Solidaria.inscribir(OPF5Factory.getInstance().makeInscripcionEstandar(jugador10));
		
		Partido partido9Solidaria1Condicional = OPF5Factory.getInstance().makePartido(new Fecha("03/12/2014 19:00", "dd/MM/yyyy HH:mm"), "Cancha5");
		partido9Solidaria1Condicional.inscribir(OPF5Factory.getInstance().makeInscripcionSolidaria(jugador1));
		partido9Solidaria1Condicional.inscribir(OPF5Factory.getInstance().makeInscripcionSolidaria(jugador2));
		partido9Solidaria1Condicional.inscribir(OPF5Factory.getInstance().makeInscripcionSolidaria(jugador3));
		partido9Solidaria1Condicional.inscribir(OPF5Factory.getInstance().makeInscripcionSolidaria(jugador4));
		partido9Solidaria1Condicional.inscribir(OPF5Factory.getInstance().makeInscripcionSolidaria(jugador5));
		partido9Solidaria1Condicional.inscribir(OPF5Factory.getInstance().makeInscripcionSolidaria(jugador6));
		partido9Solidaria1Condicional.inscribir(OPF5Factory.getInstance().makeInscripcionSolidaria(jugador7));
		partido9Solidaria1Condicional.inscribir(OPF5Factory.getInstance().makeInscripcionSolidaria(jugador8));
		partido9Solidaria1Condicional.inscribir(OPF5Factory.getInstance().makeInscripcionCondicional(jugador9));
		partido9Solidaria1Condicional.inscribir(OPF5Factory.getInstance().makeInscripcionSolidaria(jugador10));
		
		Partido partido10Condicional = OPF5Factory.getInstance().makePartido(new Fecha("04/12/2014 19:00", "dd/MM/yyyy HH:mm"), "A la vuelta");
		partido10Condicional.inscribir(OPF5Factory.getInstance().makeInscripcionCondicional(jugador1));
		partido10Condicional.inscribir(OPF5Factory.getInstance().makeInscripcionCondicional(jugador2));
		partido10Condicional.inscribir(OPF5Factory.getInstance().makeInscripcionCondicional(jugador3));
		partido10Condicional.inscribir(OPF5Factory.getInstance().makeInscripcionCondicional(jugador4));
		partido10Condicional.inscribir(OPF5Factory.getInstance().makeInscripcionCondicional(jugador5));
		partido10Condicional.inscribir(OPF5Factory.getInstance().makeInscripcionCondicional(jugador6));
		partido10Condicional.inscribir(OPF5Factory.getInstance().makeInscripcionCondicional(jugador7));
		partido10Condicional.inscribir(OPF5Factory.getInstance().makeInscripcionCondicional(jugador8));
		partido10Condicional.inscribir(OPF5Factory.getInstance().makeInscripcionCondicional(jugador9));
		partido10Condicional.inscribir(OPF5Factory.getInstance().makeInscripcionCondicional(jugador10));
		
		Partido partidoPrueba = OPF5Factory.getInstance().makePartido(new Fecha("05/12/2014 19:00", "dd/MM/yyyy HH:mm"), "Cancha5");
		partidoPrueba.inscribir(OPF5Factory.getInstance().makeInscripcionCondicional(jugador1));
		partidoPrueba.inscribir(OPF5Factory.getInstance().makeInscripcionEstandar(jugador2));
		partidoPrueba.inscribir(OPF5Factory.getInstance().makeInscripcionSolidaria(jugador3));
		partidoPrueba.inscribir(OPF5Factory.getInstance().makeInscripcionCondicional(jugador4));
		partidoPrueba.inscribir(OPF5Factory.getInstance().makeInscripcionEstandar(jugador5));
		partidoPrueba.inscribir(OPF5Factory.getInstance().makeInscripcionEstandar(jugador6));
		partidoPrueba.inscribir(OPF5Factory.getInstance().makeInscripcionSolidaria(jugador7));
	
		
		
		Partido partidoJugado = OPF5Factory.getInstance().makePartido(new Fecha("06/12/2014 19:00", "dd/MM/yyyy HH:mm"), "Futbol5");
		partidoJugado.inscribir(OPF5Factory.getInstance().makeInscripcionCondicional(jugador1));
		partidoJugado.inscribir(OPF5Factory.getInstance().makeInscripcionCondicional(jugador2));
		partidoJugado.inscribir(OPF5Factory.getInstance().makeInscripcionCondicional(jugador3));
		partidoJugado.inscribir(OPF5Factory.getInstance().makeInscripcionCondicional(jugador4));
		partidoJugado.inscribir(OPF5Factory.getInstance().makeInscripcionCondicional(jugador5));
		partidoJugado.inscribir(OPF5Factory.getInstance().makeInscripcionCondicional(jugador6));
		partidoJugado.inscribir(OPF5Factory.getInstance().makeInscripcionCondicional(jugador7));
		partidoJugado.inscribir(OPF5Factory.getInstance().makeInscripcionCondicional(jugador8));
		partidoJugado.inscribir(OPF5Factory.getInstance().makeInscripcionCondicional(jugador9));
		partidoJugado.inscribir(OPF5Factory.getInstance().makeInscripcionCondicional(jugador10));
		
		jugador1.agregarCalificacion(OPF5Factory.getInstance().makeCalificacion(jugador10, partidoJugado, 10, "Excelente!"));
		jugador2.agregarCalificacion(OPF5Factory.getInstance().makeCalificacion(jugador10, partidoJugado, 9, "Muy bien jugado"));
		jugador3.agregarCalificacion(OPF5Factory.getInstance().makeCalificacion(jugador10, partidoJugado, 8, "Muy bien jugado"));
		jugador4.agregarCalificacion(OPF5Factory.getInstance().makeCalificacion(jugador10, partidoJugado, 7, "Buen partido"));
		jugador5.agregarCalificacion(OPF5Factory.getInstance().makeCalificacion(jugador10, partidoJugado, 6, "Podrias haber jugado mejor"));
		jugador6.agregarCalificacion(OPF5Factory.getInstance().makeCalificacion(jugador10, partidoJugado, 5, "Falta practica"));
		jugador7.agregarCalificacion(OPF5Factory.getInstance().makeCalificacion(jugador10, partidoJugado, 4, "No haces un pase bien"));
		jugador8.agregarCalificacion(OPF5Factory.getInstance().makeCalificacion(jugador10, partidoJugado, 3, "Sos de madera"));
		jugador9.agregarCalificacion(OPF5Factory.getInstance().makeCalificacion(jugador10, partidoJugado, 2, "Pesimo"));
		jugador10.agregarCalificacion(OPF5Factory.getInstance().makeCalificacion(jugador1, partidoJugado, 1, "Pesimo"));
		
		List<Jugador> jugadores = new ArrayList<Jugador>();
		for (Inscripcion i : partidoJugado.getInscripciones()) {
			jugadores.add(i.getJugador());
		}
		
		Equipo equipo1 = new CreadorEquiposParejos().crearEquipo1(jugadores);
		Equipo equipo2 = new CreadorEquiposParejos().crearEquipo2(jugadores);
		partidoJugado.confirmarEquipos(equipo1, equipo2);
		
		partidoJugado.setResultado(2, 1);
		

		Partido partidoJugado2 = OPF5Factory.getInstance().makePartido(new Fecha("07/12/2014 19:00", "dd/MM/yyyy HH:mm"), "Fulbacho");
		partidoJugado2.inscribir(OPF5Factory.getInstance().makeInscripcionCondicional(jugador11));
		partidoJugado2.inscribir(OPF5Factory.getInstance().makeInscripcionCondicional(jugador12));
		partidoJugado2.inscribir(OPF5Factory.getInstance().makeInscripcionCondicional(jugador13));
		partidoJugado2.inscribir(OPF5Factory.getInstance().makeInscripcionCondicional(jugador14));
		partidoJugado2.inscribir(OPF5Factory.getInstance().makeInscripcionCondicional(jugador15));
		partidoJugado2.inscribir(OPF5Factory.getInstance().makeInscripcionCondicional(jugador16));
		partidoJugado2.inscribir(OPF5Factory.getInstance().makeInscripcionCondicional(jugador17));
		partidoJugado2.inscribir(OPF5Factory.getInstance().makeInscripcionCondicional(jugador18));
		partidoJugado2.inscribir(OPF5Factory.getInstance().makeInscripcionCondicional(jugador19));
		partidoJugado2.inscribir(OPF5Factory.getInstance().makeInscripcionCondicional(jugador20));
		
		List<Jugador> jugadores2 = new ArrayList<Jugador>();
		for (Inscripcion i : partidoJugado2.getInscripciones()) {
			jugadores2.add(i.getJugador());
		}
		
		Equipo equipo12 = new CreadorEquiposParejos().crearEquipo1(jugadores2);
		Equipo equipo22 = new CreadorEquiposParejos().crearEquipo2(jugadores2);
		partidoJugado2.confirmarEquipos(equipo12, equipo22);
		
		partidoJugado2.setResultado(10, 5);

		jugador15.agregarCalificacion(OPF5Factory.getInstance().makeCalificacion(jugador20, partidoJugado2, 10, "Excelente!"));
		jugador16.agregarCalificacion(OPF5Factory.getInstance().makeCalificacion(jugador20, partidoJugado2, 9, "Muy bien jugado"));
		jugador17.agregarCalificacion(OPF5Factory.getInstance().makeCalificacion(jugador20, partidoJugado2, 8, "Muy bien jugado"));
		jugador18.agregarCalificacion(OPF5Factory.getInstance().makeCalificacion(jugador20, partidoJugado2, 7, "Buen partido"));
		jugador19.agregarCalificacion(OPF5Factory.getInstance().makeCalificacion(jugador20, partidoJugado2, 6, "Podrias haber jugado mejor"));
		jugador20.agregarCalificacion(OPF5Factory.getInstance().makeCalificacion(jugador11, partidoJugado2, 5, "Falta practica"));
		jugador11.agregarCalificacion(OPF5Factory.getInstance().makeCalificacion(jugador20, partidoJugado2, 4, "No haces un pase bien"));
		jugador12.agregarCalificacion(OPF5Factory.getInstance().makeCalificacion(jugador20, partidoJugado2, 3, "Sos de madera"));
		jugador13.agregarCalificacion(OPF5Factory.getInstance().makeCalificacion(jugador20, partidoJugado2, 2, "Pesimo"));
		jugador14.agregarCalificacion(OPF5Factory.getInstance().makeCalificacion(jugador20, partidoJugado2, 1, "Pesimo"));

		
		System.out.println("Fin de carga de datos");
	}
}
